module.exports = app => {
  const { router, controller, io } = app
  const checktoken = app.middleware.checktoken();
  const checkadmin = app.middleware.checkadmin();

  // 上传相关接口
  router.post('/user/upload-avatar', checktoken, controller.user.uploadAvatar);//上传头像
  router.post('/upload/post-image', checktoken, controller.upload.uploadPostImage);//上传帖子图片
  router.post('/upload/circle-post-image', checktoken, controller.upload.uploadCirclePostImage);//上传圈子帖子图片


  // WebSocket 路由
  io.of('/').route('sendMessage', io.controller.chat.sendMessage);
  io.of('/').route('joinConversation', io.controller.chat.joinConversation);
  io.of('/').route('leaveConversation', io.controller.chat.leaveConversation);
  io.of('/').route('markAsRead', io.controller.chat.markAsRead);
  io.of('/').route('typing', io.controller.chat.typing);

  // 会话相关路由
  router.post('/conversations', checktoken, controller.conversation.createOrGet);//获取创建会话
  router.get('/conversations', checktoken, controller.conversation.list);//获取会话列表
  router.get('/conversations/:id', checktoken, controller.conversation.detail);//获取会话详情
  router.post('/conversations/:id/close', checktoken, controller.conversation.close);//关闭会话
  router.post('/conversations/:id/reset-unread', checktoken, controller.conversation.resetUnread);//标记未读
  // 消息相关路由
  router.post('/messages', checktoken, controller.message.send);//发送消息
  router.get('/conversations/:conversation_id/messages', checktoken, controller.message.list);//获取消息列表
  router.post('/messages/mark-as-read', checktoken, controller.message.markAsRead);//标记已读
  router.delete('/messages/:id', checktoken, controller.message.delete);//撤回消息
  router.get('/messages/unread-count', checktoken, controller.message.unreadCount);//未读总数
  // 职位申请相关接口（简历投递及审核）
  router.get('/api/admin/job-applications', checktoken, controller.jobApplication.adminList)
  router.post('/api/job-applications', checktoken, controller.jobApplication.apply); // 投递简历（对应 apply 方法）
  router.get('/api/job-applications/employer', checktoken, controller.jobApplication.employerApplications); // 雇主查看收到的申请（对应 employerApplications 方法）
  router.get('/api/job-applications/my', checktoken, controller.jobApplication.myApplications); // 求职者查看自己的申请（对应 myApplications 方法）
  router.put('/api/job-applications/review/:id', checktoken, controller.jobApplication.review); // 审核申请（对应 review 方法）
  // 简历相关接口
  router.post('/api/resumes', checktoken, controller.resume.create); // 新增简历
  router.post('/api/upload/resume', controller.resume.uploadResumeImage);
  router.get('/api/resumes/my', checktoken, controller.resume.myResumes); // 我的简历列表
  router.get('/api/resumes/:id', checktoken, controller.resume.show); // 简历详情
  router.put('/api/resumes/:id', checktoken, controller.resume.update); // 更新简历
  router.patch('/api/resumes/:id/visibility', checktoken, controller.resume.setVisibility); // 修改可见性
  router.delete('/api/resumes/:id', checktoken, controller.resume.destroy); // 删除简历
  // 职位相关接口
  router.get('/api/jobs', controller.job.index); // 列表接口无需登录
  router.get('/api/jobs/:id', controller.job.show); // 详情接口无需登录
  router.post('/api/jobs', checktoken, controller.job.create); // 创建需登录
  router.put('/api/jobs/:id', checktoken, controller.job.update); // 更新需登录
  router.delete('/api/jobs/:id', checktoken, controller.job.destroy); // 删除需登录
  router.post('/api/jobs/:id/apply', checktoken, controller.job.apply); // 申请需登录
  // 用户公开接口
  router.post('/user/register', controller.user.register);//用户注册
  router.post('/user/login', controller.user.login);//用户登录
  router.get('/user/current', checktoken, controller.user.current);//获取当前用户信息
  router.put('/user/change-password', checktoken, controller.user.changePassword);//修改密码
  router.post('/user/logout', checktoken, controller.user.logout); // 用户登出


  // 用户管理接口
  router.get('/users', controller.user.list);//获取用户列表
  router.get('/users/:id', checktoken, controller.user.detail);//获取用户详情
  router.put('/users/:id', controller.user.update);//更新用户信息
  router.delete('/users/:id', checktoken, controller.user.delete)//删除用户

  // 验证码相关接口
  router.get('/admin/captcha', controller.admin.captcha); // 获取验证码
  router.get('/user/captcha', controller.user.captcha); // 获取验证码

  // 管理员公开接口
  router.post('/admin/login', controller.admin.login);//管理员登录
  router.get('/admin/current', checktoken, controller.admin.current);//获取当前管理员信息
  router.put('/admin/change-password', checktoken, controller.admin.changePassword);//修改密码
  router.post('/admin/logout', checktoken, controller.admin.logout); // 管理员登出
  // 管理员管理接口
  router.post('/admin', controller.admin.create);//创建管理员
  router.get('/admin', checktoken, controller.admin.list);//获取管理员列表
  router.get('/admin/:id', checktoken, controller.admin.detail);//获取管理员详情
  router.put('/admin/:id', checktoken, controller.admin.update);//更新管理员信息
  router.delete('/admin/:id', checktoken, controller.admin.delete);//删除管理员

  // 帖子相关接口
  router.post('/posts', checktoken, controller.post.create);//创建帖子
  router.get('/posts', controller.post.list); // 获取帖子列表
  router.get('/posts/:id', controller.post.detail); // 帖子详情
  router.put('/posts/:id', checktoken, controller.post.update);// 更新帖子信息
  router.delete('/posts/:id', checktoken, controller.post.delete);// 删除帖子
  router.post('/posts/:id/like', checktoken, controller.post.like);// 帖子点赞
  router.post('/posts/:id/unlike', checktoken, controller.post.unlike);// 取消帖子点赞
  router.get('/users/:user_id/posts', controller.post.userPosts); // 获取用户的所有帖子

  // 评论相关接口
  router.post('/comments', checktoken, controller.comment.create);// 创建评论
  router.get('/posts/:post_id/comments', controller.comment.list);// 获取帖子的所有评论
  router.get('/comments/:comment_id/replies', controller.comment.replies);// 获取评论的所有回复
  router.get('/comments/:id', controller.comment.detail);// 获取评论详情
  router.put('/comments/:id', checktoken, controller.comment.update);// 更新评论信息
  router.delete('/comments/:id', checktoken, controller.comment.delete);// 删除评论
  router.get('/users/:user_id/comments', controller.comment.userComments);// 获取用户的所有评论

  // 用户圈子关系接口
  router.post('/circles/join', checktoken, controller.circle.join); // 加入圈子
  router.post('/circles/leave', checktoken, controller.circle.leave); // 退出圈子
  router.get('/circles/user-circles', checktoken, controller.circle.userCircles); // 获取用户加入的圈子
  router.get('/circles/members', controller.circle.members); // 获取圈子成员列表
  router.post('/circles/batch-status', checktoken, controller.circle.batchStatus); // 批量获取用户与圈子的加入状态

  // 圈子相关接口
  router.post('/circles', checktoken, controller.circle.create); // 新增圈子，仅管理员
  router.get('/circles', controller.circle.list); // 获取圈子，公开
  router.get('/circles/hot', controller.circle.hot); // 获取热门圈子，公开
  router.get('/circles/search', controller.circle.search); // 搜索圈子，公开
  router.get('/circles/stats', checktoken, controller.circle.stats); // 获取圈子统计信息,仅管理员
  router.get('/circles/:id', controller.circle.detail); // 圈子详情，公开
  router.put('/circles/:id', checktoken, controller.circle.update); // 更新圈子信息，仅管理员
  router.delete('/circles/:id', checktoken, controller.circle.delete); // 删除圈子，仅管理员
  router.post('/circles/remove-member', checktoken, controller.circle.removeMember)// 移除圈子成员，仅管理员

  // 圈子帖子相关接口
  router.get('/circle-posts/search', controller.circlePost.search); // 搜索圈子帖子
  router.get('/circle-posts/hot', controller.circlePost.hot); // 获取热门圈子帖子
  router.post('/circle-posts', checktoken, controller.circlePost.create); // 创建圈子帖子
  router.get('/circles/:circle_id/posts', controller.circlePost.list); // 获取圈子帖子列表
  router.get('/circle-posts/:id', controller.circlePost.detail); // 获取帖子详情
  router.put('/circle-posts/:id', checktoken, controller.circlePost.update); // 更新帖子
  router.delete('/circle-posts/:id', checktoken, controller.circlePost.delete); // 删除帖子
  router.post('/circle-posts/:id/like', checktoken, controller.circlePost.like); // 点赞帖子
  router.post('/circle-posts/:id/unlike', checktoken, controller.circlePost.unlike); // 取消点赞
  router.get('/circle-posts/user/posts', checktoken, controller.circlePost.userPosts); // 获取用户在所有圈子中的帖子

  // 圈子帖子评论相关接口
  router.get('/circle/post/comment/replies', controller.circlePostComment.replies);// 获取圈子帖子评论的回复列表
  router.post('/circle/post/comment', controller.circlePostComment.create); // 创建圈子帖子评论
  router.get('/circle/post/comment', controller.circlePostComment.list); // 获取圈子帖子评论列表
  router.get('/circle/post/comment/:id', controller.circlePostComment.detail);// 获取圈子帖子评论详情
  router.put('/circle/post/comment/:id', controller.circlePostComment.update);// 更新圈子帖子评论
  router.delete('/circle/post/comment/:id', controller.circlePostComment.delete);// 删除圈子帖子评论

  // 关注相关接口
  router.post('/follow', controller.follow.follow); // 关注
  router.delete('/unfollow/:follow_id', controller.follow.unfollow); // 取消关注
  router.get('/following/:user_id', controller.follow.following); // 关注列表
  router.get('/followers/:user_id', controller.follow.followers); // 粉丝列表

  // 系统公告路由
  router.post('/api/announcements', controller.announcement.create);
  router.get('/api/announcements', controller.announcement.list);
  router.get('/api/announcements/latest', controller.announcement.latest);
  router.get('/api/announcements/stats', controller.announcement.stats);
  router.get('/api/announcements/:id', controller.announcement.detail);
  router.put('/api/announcements/:id', controller.announcement.update);
  router.delete('/api/announcements/:id', controller.announcement.delete);
  router.post('/api/announcements/batch-delete', controller.announcement.batchDelete);

  // 轮播图路由
  router.post('/api/banners', controller.banner.create);
  router.get('/api/banners', controller.banner.list);
  router.get('/api/banners/active', controller.banner.active);
  router.get('/api/banners/stats', controller.banner.stats);
  router.get('/api/banners/:id', controller.banner.detail);
  router.put('/api/banners/:id', controller.banner.update);
  router.delete('/api/banners/:id', controller.banner.delete);
  router.patch('/api/banners/:id/toggle-status', controller.banner.toggleStatus);
  router.post('/api/banners/batch-update-orders', controller.banner.batchUpdateOrders);
  router.post('/api/banners/batch-delete', controller.banner.batchDelete);

  // 校友管理路由
  router.post('/api/alumni/create', controller.alumni.create);
  router.get('/api/alumni/list', controller.alumni.list);
  router.get('/api/alumni/detail/:id', controller.alumni.detail);
  router.get('/api/alumni/student/:student_id', controller.alumni.detailByStudentId);
  router.put('/api/alumni/update/:id', controller.alumni.update);
  router.delete('/api/alumni/delete/:id', controller.alumni.delete);
  router.post('/api/alumni/batch-create', controller.alumni.batchCreate);
  router.get('/api/alumni/statistics', controller.alumni.statistics);

  // 校友认证路由
  router.post('/api/alumni/verify', controller.alumni.verify); // 校友认证（无需登录）
  router.get('/api/alumni/verification-status/:student_id', controller.alumni.getVerificationStatus); // 获取认证状态

  // 全局搜索路由
  router.get('/api/search/global', controller.search.globalSearch);

  // 失物招领相关接口 
  router.post('/api/lost-and-found', checktoken, controller.lostAndFound.create); // 创建
  router.get('/api/lost-and-found', controller.lostAndFound.list); // 列表
  router.get('/api/lost-and-found-simple', controller.lostAndFound.listSimple); // 简单列表（不关联用户）
  router.get('/api/lost-and-found/my', checktoken, controller.lostAndFound.myItems); // 我的物品
  router.get('/api/lost-and-found/:id', controller.lostAndFound.detail); // 详情
  router.put('/api/lost-and-found/:id', checktoken, controller.lostAndFound.update); // 更新
  router.delete('/api/lost-and-found/:id', checktoken, controller.lostAndFound.delete); // 删除
  router.patch('/api/lost-and-found/:id/status', checktoken, controller.lostAndFound.updateStatus); // 更新状态

  //二手商品相关接口 
  // 创建二手商品（需要登录）
  router.post('/api/goods', checktoken, controller.good.create);
  // 获取二手商品列表（公开，无需登录）
  router.get('/api/goods', controller.good.list);
  // 获取简单列表（公开，无需登录，不关联用户信息）
  router.get('/api/goods-simple', controller.good.listSimple);
  // 获取我的商品（需要登录）
  router.get('/api/goods/my', checktoken, controller.good.myGoods);
  // 获取商品详情（公开，无需登录）
  router.get('/api/goods/:id', controller.good.detail);
  // 更新商品信息（需要登录，只能更新自己的商品）
  router.put('/api/goods/:id', checktoken, controller.good.update);
  // 删除商品（需要登录，只能删除自己的商品）
  router.delete('/api/goods/:id', checktoken, controller.good.delete);
  // 更新商品状态（需要登录，只能更新自己的商品）
  router.patch('/api/goods/:id/status', checktoken, controller.good.updateStatus);

  router.post('/upload/good-image', controller.upload.uploadGoodImage);
  router.post('/upload/good-images', controller.upload.uploadMultipleGoodImages);
  router.delete('/upload/good-image', controller.upload.deleteGoodImage);
  router.post('/upload/banner-image', controller.upload.uploadBannerImage);

  //订单相关接口
  router.post('/api/orders', controller.order.create); // 创建订单
  router.get('/api/orders', controller.order.list); // 订单列表（分页+基础搜索）
  router.get('/api/orders/search', controller.order.search); // 订单高级搜索
  router.get('/api/orders/my', controller.order.myOrders); // 我的订单（支持搜索）
  router.get('/api/orders/stats', controller.order.stats); // 订单统计
  router.get('/api/orders/:id', controller.order.detail); // 订单详情
  router.put('/api/orders/:id/status', controller.order.updateStatus); // 更新订单状态
  router.delete('/api/orders/:id', controller.order.delete); // 删除订单
}
